#include "SystemCalls.h"

using namespace std;

SystemCalls* SystemCalls::m_instance1=NULL;

SystemCalls::SystemCalls()
{
system2=new Kernel();
}

SystemCalls::SystemCalls(Kernel* kernel)
{
system2=kernel;
}

SystemCalls::~SystemCalls()
{
delete system2;
}

SystemCalls* SystemCalls::getInstance()
{
if (m_instance1!=NULL)
	return m_instance1;
m_instance1=new SystemCalls();
return m_instance1;
}

SystemCalls* SystemCalls::getInstance(Kernel* kernel)
{
if (m_instance1!=NULL)
	return m_instance1;
m_instance1=new SystemCalls(kernel);
return m_instance1;
}

void SystemCalls::StartOS()
{
system2->StartOS();
}

void SystemCalls::SendText(int fromNode, int toNode, char* text) {
system2->SendText(fromNode,toNode,text);
}


int SystemCalls::Send(int DestinationThreadID, Message* msg)
{
return system2->Send(DestinationThreadID,msg);
}
		
Message* SystemCalls::Receive(int RecieverID)
{

return system2->Receive(RecieverID);

}

int SystemCalls::numofmessages(int RecieverID)
{
return system2->numofmessages(RecieverID);
}

int SystemCalls::CrashNode(int NodeID)
{
system2->CrashNode(NodeID);
}

bool SystemCalls::Deadlock(int id) 
{
return system2->Deadlock(id);
}

int SystemCalls::ReviveNode(int NodeID)
{
system2->ReviveNode(NodeID);
}
		
void SystemCalls::ShowTable(int NodeID)
{
system2->ShowTable(NodeID);
}
		
int SystemCalls::KillAll()
{
system2->KillAll();
}
		
double SystemCalls::Time()
{
return system2->Time();
}
		
double SystemCalls::Time(int NodeID)
{
return system2->Time(NodeID);
}
		
int SystemCalls::Max_Length()
{
return system2->Max_Length();
}
		
int SystemCalls::Max_Length(int NodeID)
{
return system2->Max_Length(NodeID);
}
		
int SystemCalls::CreateNet(char* Filename)
{
return system2->CreateNet(Filename); 
};







